package com.yesep.learn.design.common.util;

import java.time.*;

public class Util {
    @SuppressWarnings("unchecked")
    public static <T> T getInstance(String className) throws Exception {
        Class<T> cls = (Class<T>) Class.forName(className);
        return getInstance(cls);
    }

    public static <T> T getInstance(Class<T> cls) throws Exception {
        return (T) cls.newInstance();
    }

    /**
     * 计算两个时间点之间的天数差（包括小数，保留一位小数）
     *
     * @param begin 开始时间
     * @param end   结束时间
     * @return 时间间隔（天数，包括小数，保留一位小数）
     */
    public static double getDaysBetween(LocalDateTime begin, LocalDateTime end) {
        // 计算两个时间点之间的Duration
        Duration duration = Duration.between(begin, end);
        // 将Duration转换为总秒数，然后除以每天的秒数（24小时 * 60分钟 * 60秒）
        double totalSeconds = duration.getSeconds() + duration.getNano() / 1_000_000_000.0;
        double days = totalSeconds / (24 * 60 * 60);
        return Math.round(days * 10.0) / 10.0;
    }
}
